Different application components, whether part of a same computer application or different computer applications, often need to send custom events and data between each other. In one current approach to enable this functionality, each application component implements a message handler and registers with a global message queue. One application component sends a message with data attached to the global message queue and another application component's message handler fetches the message with the data attached.
This current approach fails to operate when the application components do not have access to each other or the global messaging queue. This may occur due to the receiving application component not being in existence when the message is sent. It may also occur due to application components being located in different layers and thus not able to communicate with each other or the global messaging queue.